home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / Updates, etc. / PG PRO⁄PG Lite Demos / PG PRO Demo / PG PRO Demo.rsrc / FLTR_1003_DOID < prev    next >
Text File  |  1993-09-10  |  6KB  |  237 lines

  1. '===============================================================================
  2. '=                         Copyright 1992 Staz™ Software, Inc.                 =
  3. '=                               All rights reserved                           =
  4. '=                             "DOID.FLTR" from PG:PRO                         =
  5. '===============================================================================
  6. INCLUDE FILE _aplIncl
  7. COMPILE 0,_MacsbugLabels_strResource_caseInsensitive'set by PG:PRO
  8. GLOBALS "PG PRO.GLBL"'standard
  9. END GLOBALS'end of global DIMs
  10. INCLUDE "@Header.INCL"
  11. _fixBkgdDocHilite = 2001
  12. GOTO"DOID Filter"'ALWAYS branch around FNs
  13. '
  14. '===============================================================================
  15. LOCAL FN doidWndEvent(theWnd,theEvent)
  16. '=============================================================================
  17. WINDOW OUTPUT  theWnd
  18. gActWindow   = theWnd
  19. gOutWindow   = theWnd
  20. gWhichWindow = theWnd
  21. gWhichClass  = WINDOW(_outputWClass)
  22. gAction      = _windowAction
  23. gSubAction   = theEvent
  24. GLOBALS GOSUB "End of DOID"
  25. END FN
  26. '===============================================================================
  27. LOCAL FN drawWindoid
  28. '=============================================================================
  29. DIM thePat;8,t;8
  30. LONG IF gObjUserTp& = _"DOID"
  31. CALL GETPENSTATE(pn$)
  32. `       MOVE.L  #$00550055,D0
  33. `       LEA     ^thePat,A0
  34. `       MOVE.L  D0,(A0)+
  35. `       MOVE.L  D0,(A0)
  36. `       PEA     ^thePat
  37. `       _penPat
  38.  
  39. CALL PAINTRECT(gObjT)
  40. CALL PENNORMAL
  41. LONG IF gObjUser1 AND 2'it's on side
  42. CALL MOVETO(gObjR,gObjT)
  43. CALL LINETO(gObjR,gObjB)
  44. CALL SETRECT(t,1,3,8,10)
  45. XELSE
  46. CALL MOVETO(gObjL,gObjB)
  47. CALL LINETO(gObjR,gObjB)
  48. CALL SETRECT(t,3,1,10,8)
  49. END IF
  50. LONG IF gObjUser1 AND 1'Has close box
  51. CALL FRAMERECT(t)
  52. CALL INSETRECT(t,1,1)
  53. CALL ERASERECT(t)
  54. END IF
  55. CALL SETPENSTATE(pn$)
  56. END IF
  57. END FN
  58. '===============================================================================
  59. LOCAL FN dragWindoid
  60. '=============================================================================
  61. DIM t;8,my;4
  62. LONG IF gObjUserTp& = _"DOID"
  63. closed = _false
  64. LONG IF (gObjUser1 AND 1)'Has close box
  65. LONG IF (gObjUser1 AND 2)'it's on side
  66. CALL SETRECT(t,1,3,8,10)
  67. XELSE'across top
  68. CALL SETRECT(t,3,1,10,8)
  69. END IF
  70. my;4 = @gWhereY
  71. CALL GLOBALTOLOCAL(my)
  72. LONG IF FN PTINRECT(my,t)'click was in close box?
  73. wasInClose = _false
  74. isInClose  = _false
  75. WHILE FN STILLDOWN
  76. CALL GETMOUSE(my)
  77. isInClose = FN PTINRECT(my,t)
  78. LONG IF wasInClose <> isInClose
  79. wasInClose = isInClose
  80. CALL INVERTRECT(t)
  81. END IF
  82. WEND
  83. LONG IF isInClose
  84. FN doidWndEvent(WINDOW(_activewnd),_windowClose)
  85. LONG IF gAction
  86. FN pGclose(gActWindow)
  87. closed = _zTrue
  88. gAction = 0
  89. END IF
  90. END IF
  91. END IF
  92. END IF
  93. LONG IF closed = _false
  94. CALL SETRECT(t,-9999,-9999,9999,9999)
  95. CALL DRAGWINDOW(WINDOW(_wndpointer),gWhereY,t)
  96. END IF
  97. END IF
  98. END FN
  99. '===============================================================================
  100. LOCAL FN getWndRef(wPtr&)
  101. '=============================================================================
  102. wndNum = PEEK(wPtr&+_wRefCon + 1) AND 63
  103. IF [WNDBLK + wndNum * 16] <> wPtr& THEN wndNum = 0
  104. END FN = wndNum
  105. '===============================================================================
  106. LOCAL FN wndIsBkGrndDoc(wPtr&)
  107. '=============================================================================
  108. result = _false
  109. LONG IF FN GETWREFCON(wPtr&) AND _keepInBack
  110. result = FN getWndRef(wPtr&)
  111. END IF
  112. END FN = result
  113. '===============================================================================
  114. LOCAL FN hiliteBkGrndDoc
  115. '=============================================================================
  116. wPtr& = FN FRONTWINDOW
  117. frontDoc = 0
  118. LONG IF wPtr&
  119. LONG IF gInBackground OR SYSTEM(_aplActive)=0
  120. gotDocWnd = _zTrue
  121. XELSE
  122. gotDocWnd = _false
  123. END IF
  124. frontDoc = 0
  125. DO
  126. LONG IF FN wndIsBkGrndDoc(wPtr&)
  127. LONG IF gotDocWnd
  128. CALL HILITEWINDOW(wPtr&,_false)
  129. XELSE
  130. CALL HILITEWINDOW(wPtr&,_zTrue)
  131. gotDocWnd = _zTrue
  132. frontDoc = FN getWndRef(wPtr&)
  133. END IF
  134. END IF
  135. wPtr& = [wPtr&+_nextWindow]
  136. UNTIL wPtr& = 0
  137. END IF
  138. END FN = frontDoc
  139. '===============================================================================
  140. LOCAL FN findNCloseDoc
  141. '=============================================================================
  142. frontDoc = FN hiliteBkGrndDoc
  143. LONG IF frontDoc
  144. FN doidWndEvent(frontDoc,_windowClose)
  145. LONG IF gAction
  146. FN pGclose(gActWindow)
  147. gAction = 0
  148. frontDoc = FN hiliteBkGrndDoc
  149. IF frontDoc THEN WINDOW frontDoc
  150. END IF
  151. END IF
  152. END FN
  153. '===============================================================================
  154. LOCAL FN clickBkGrndDoc
  155. '=============================================================================
  156. GET WINDOW gWhichWindow,wPtr&
  157. LONG IF FN wndIsBkGrndDoc(wPtr&)
  158. WINDOW gWhichWindow
  159. FN doidWndEvent(gWhichWindow,_windowClicked)
  160. FN hiliteBkGrndDoc
  161. gAction  = 0
  162. END IF
  163. END FN
  164. '===============================================================================
  165. LOCAL FN closeBkGrndDoc
  166. '=============================================================================
  167. LONG IF gKissOfDeath = _false
  168. GET WINDOW gWhichWindow,wPtr&
  169. LONG IF FN wndIsBkGrndDoc(wPtr&)
  170. GLOBALS GOSUB "End of DOID"
  171. LONG IF gAction
  172. DIALOG = _fixBkgdDocHilite
  173. END IF
  174. END IF
  175. END IF
  176. END FN
  177. '===============================================================================
  178. LOCAL FN fixWindowOrder
  179. '=============================================================================
  180. DIM doid(64)
  181. doidCnt = 0
  182. wPtr& = FN FRONTWINDOW
  183. WHILE wPtr&
  184. LONG IF FN wndIsBkGrndDoc(wPtr&) = _false
  185. theWindow = FN getWndRef(wPtr&)
  186. LONG IF theWindow
  187. INC(doidCnt)
  188. doid(doidCnt) = theWindow
  189. END IF
  190. END IF
  191. wPtr& = [wPtr&+_nextWindow]
  192. WEND
  193. WHILE doidCnt
  194. WINDOW doid(doidCnt)
  195. DEC(doidCnt)
  196. WEND
  197. END FN
  198. '===============================================================================
  199. "DOID Filter"
  200. SELECT gAction
  201. CASE _otherAction
  202. SELECT gSubAction
  203. CASE _otherSwitch    :FN hiliteBkGrndDoc
  204. CASE _otherUserUpdate:FN drawWindoid
  205. CASE _otherUserClick :FN dragWindoid
  206. CASE _otherUser
  207. LONG IF gDialogValue = _fixBkgdDocHilite
  208. FN hiliteBkGrndDoc
  209. END IF
  210. END SELECT
  211. CASE _windowAction
  212. SELECT gSubAction
  213. CASE _windowClicked
  214. LONG IF SYSTEM(_aplActive)=0
  215. FN fixWindowOrder
  216. XELSE
  217. FN clickBkGrndDoc
  218. END IF
  219. CASE _windowDocWillMove
  220. WINDOW gWhichWindow
  221. FN fixWindowOrder
  222. FN hiliteBkGrndDoc
  223. CASE _windowClose
  224. FN closeBkGrndDoc
  225. CASE _windowSized
  226. FN fixWindowOrder
  227. END SELECT
  228. CASE _menuAction
  229. LONG IF _closeItemSkipsDoids
  230. LONG IF gItemName$ = STR#(_baseID - 2,5)
  231. FN findNCloseDoc
  232. END IF
  233. END IF
  234. END SELECT
  235. "End of DOID"
  236. '===============================================================================
  237.